/**
 * 版权所有 (C), 2019-2019, XXX有限公司
 * 项目名：com.company.study.dsa.stack
 * 文件名: SeparatorMatchTest
 * 日期: 2019/6/17 21:10
 * 说明:
 */
package com.company.study.dsa.stack;

import java.util.Stack;

/**
 * 利用JDK中的Stack实现分隔符匹配<p>
 * 遇到左边分隔符了就push进栈，遇到右边分隔符了就pop出栈，看出栈的分隔符是否和这个有分隔符匹配
 *
 * @author Anbang713
 * @create 2019/6/17
 */
public class SeparatorMatchTest {

    public static void main(String[] args) {
        Stack stack = new Stack();
        String str = "12<a[b{c}]>";
        char[] cha = str.toCharArray();
        for (char c : cha) {
            switch (c) {
                case '{':
                case '[':
                case '<':
                    stack.push(c);//进栈
                    break;
                case '}':
                case ']':
                case '>':
                    if (!stack.isEmpty()) {
                        char ch = stack.pop().toString().toCharArray()[0];//出栈进行比较
                        if (c == '}' && ch != '{'
                                || c == ']' && ch != '['
                                || c == ')' && ch != '(') {
                            System.out.println("Error:" + ch + "-" + c);
                        }
                    }
                    break;
                default:
                    break;
            }
        }
    }
}